using System;
using Cysharp.Threading.Tasks;
using JetBrains.Annotations;

namespace EventBus
{
    public partial class EventBusImpl
    {
        public void RemoveListen<TResult>([NotNull] string eventName, [NotNull] Func<UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, TResult>([NotNull] string eventName, [NotNull] Func<T1, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, T2, TResult>([NotNull] string eventName, [NotNull] Func<T1, T2, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, T2, T3, TResult>([NotNull] string eventName, [NotNull] Func<T1, T2, T3, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, T2, T3, T4, TResult>([NotNull] string eventName, [NotNull] Func<T1, T2, T3, T4, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, T2, T3, T4, T5, TResult>([NotNull] string eventName, 
            [NotNull] Func<T1, T2, T3, T4, T5, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, T2, T3, T4, T5, T6, TResult>([NotNull] string eventName, 
            [NotNull] Func<T1, T2, T3, T4, T5, T6, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, T2, T3, T4, T5, T6, T7, TResult>([NotNull] string eventName, 
            [NotNull] Func<T1, T2, T3, T4, T5, T6, T7, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
        public void RemoveListen<T1, T2, T3, T4, T5, T6, T7, T8, TResult>([NotNull] string eventName, 
            [NotNull] Func<T1, T2, T3, T4, T5, T6, T7, T8, UniTask<TResult>> callback)
        {
            RemoveListen(eventName, (object)callback);
        }
    }
}